#include <iostream>

/*

    const: 常函数：
        1、 使用关键字在函数后面加上 const 关键字
        2、 常函数中，对象的属性值不能被修改
        3、 在常函数中，不允许调用普通函数，只能调用其他的常函数
*/

class Person
{

private:
    int age;
    std::string name;
    int score;

public:
    Person() : name("刘武周"), age(10), score(100) {}
    Person(int age, std::string name, int score) : age(age), name(name), score(score) {}

    void modify_person(int age, std::string name, int score) const
    {
        // this->age = age; // 加了const 关键字后，对象的属性就没有办法修改了
        // this->name = name;
        // this->score = score;
        // this->display(); // 常函数中不能调用普通函数，
    }

    void display()
    {
        std::cout << "Name：" << name << "\tAge：" << age << "\tScore：" << score << std::endl;
        // modify_person(0, "display", 100); // 普通函数中，可以调用const函数，常函数
        std::cout << "Name：" << name << "\tAge：" << age << "\tScore：" << score << std::endl;

    }
};

int main(int argc, char const *argv[])
{
    

    Person p1;

    p1.display();

    p1.modify_person(100, "Joe", 99);

    std::cout << "after *************" << std::endl;
    p1.display();

    return 0;
}
